
#ifndef GRAPHFACTORY_HPP_
#define GRAPHFACTORY_HPP_

#include <string>
#include "../logger/logger.hpp"
#include "../validacion/nodeValidator.hpp"
#include "../validacion/edgeValidator.hpp"
#include "graph.hpp"

/**
 * Class GraphFactory: encargada de la generacion
 * del grafo validando cada elemento ingresante.
 */
class GraphFactory {
private:
	NodeValidator nodeValidator;
	EdgeValidator edgeValidator;
	Graph*		  graph;
public:

	/**
	 * Constructor parametrizado de la clase GraphFactory.
	 */
	GraphFactory(std::string &fileToParseN, std::string &fileToParseE,std::string &fileConfig,
			   Logger *logger, int numberOfFieldsN, int numberOfFieldsE, Graph* graph);

	/**
	 * Destructor de la clase GraphFactory.
	 */
	virtual ~GraphFactory();

	/**
	 * Destructor de la clase GraphFactory.
	 */
	void generateGraph();
};

#endif /* GRAPHFACTORY_HPP_ */
